iT邦幫忙

2021 iThome 鐵人賽

DAY 7
1

接下來我們要把前幾天的內容封裝成一個流程,讓我們複習一下

https://ithelp.ithome.com.tw/upload/images/20210913/20118647T8zZxD75je.png

前幾天已經取得各項api所需要的基本參數了,
1.取得nonce --Day03 永豐金API 基礎流程 -- Nonce
2.取得hashId --Day04 永豐金API 基礎流程 -- HashID
3.取得sign --Day05 永豐金API 基礎流程 -- Sign
4.取的message --Day06 永豐金API 基礎流程 -- 訊息內文

接著按照步驟,

$order_api_url = 'https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order'; //測試網址
public function apiService($service, $data){
    //取得 Nonce 值
    $Nonce = getNonce($data['ShopNo']);

    //取得 HashID
    $HashID = getHashID($hash);

    //取得 IV
    $IV = getIV($Nonce);

    //取得 Sign
    $Sign = getSign($data, $Nonce, $HashID);

    //訊息內文 E2E 加密(先將變數為 null 移除)
    $data = array_filter((array) ($data));
    $Message = $this->checkMac->EncryptAesCBC(json_encode($data), $HashID, $IV);

    //建立 Request
    $Request = [
        'Version' => '1.0.0',
        'ShopNo' => ‘商家代碼’,
        'APIService' => $service, //服務名稱 OrderCreate, OrderPayQuery
        'Sign' => $Sign,
        'Nonce' => $Nonce,
        'Message' => $Message,
    ];

    //取得永豐銀行回覆訊息 (Day3 永豐金API  基礎流程1 -- Nonce 我們之前封裝的)
    $Response = WebAPI($order_api_url, $Request);

    //取得 Response Nonce
    $ResNonce = $Response->Nonce;
    //取得 Response IV
    $ResIV = getIV($ResNonce);
    //取得永豐銀行訊息內文
    $result = DecryptAesCBC($Response->Message, $HashID, $ResIV);

    return $result;
}

這時候要注意的是最後還要做一個解密的流程,

    //取得 Response Nonce
    $ResNonce = $Response->Nonce;
    //取得 Response IV
    $ResIV = getIV($ResNonce);
    //取得永豐銀行訊息內文
    $result = DecryptAesCBC($Response->Message, $HashID, $ResIV);

1.取得api回傳的Nonce
2.透過該Nonce取得ResIV
3.透過一開始的HashID+ResIV進行解密(解密的函式官方有封裝)

最後就會取得call api的結果

{
	"OrderNo": "A201804270001",
	"ShopNo": "BA0026_001",
	"TSNo": "BA002600000037",
	"PayType": "A",
	"Amount": 50000,
	"Status": "S",
	"Description": "S0000 – 處理成功",
	"ATMParam": {
		"AtmPayNo": "atm帳號",
		"WebAtmURL": "web atb url",
		"OtpURL": "Otp url"
	}
}

然後就可以透過ATMParam的內容就是Day2 線上金流再做什麼?
提到要提供給小明的付款資訊,這邊是以atm付款為範例,
詳細有哪些項目之後會陸續介紹,以上就是封裝整個call api流程的過程,
之後所有永豐金-豐收款api都是這個流程,從建立訂單到查詢都一樣,
因此花了很多篇幅在介紹,基礎流程到這裡就告一段落了,
接下來就要進入各api服務的內容,下期見。


上一篇
Day06 永豐金API 基礎流程 -- 訊息內文
下一篇
Day08 永豐金API 建立訂單交易
系列文
掌握訂單與線上金流的剪不斷理還亂30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
mina999
iT邦新手 5 級 ‧ 2021-09-13 13:00:52

讚讚的分享~

firecold iT邦新手 1 級 ‧ 2021-09-14 10:54:34 檢舉

感謝肯定/images/emoticon/emoticon41.gif

我要留言

立即登入留言